import md5 from "md5"
// @ts-ignore
import {sm4 as SM4} from 'gm-crypt'

const passwordUtils = {
  securityInfo: {
    // 密码复杂度
    pwdSafeStrategy: '',
    // 首次登录修改密码
    firstLoginPwdModify: '',
    // 密码有效期
    pwdExpirePeriod: '',
    // 错误次数
    pwdErrTimes: '',
  },

  getKey(key: any) {
    // 翻转
    key = key.split('').reverse().join('')
    // 追加 key长度 - 3 的数值
    key += '' + (key.length - 3)
    // 截取16位
    key = key.substring(0, 16)
    // 若不足16位则用0补全
    return md5(key.padEnd(16, "0")).substring(0, 16)
  },
  encrypt(username: string, data: any) {
    let sm4Config = {
      //配置sm4参数
      key: this.getKey(username),
      mode: "ecb", // 加密的方式有两种，ecb和cbc两种，也是看后端如何定义的，不过要是cbc的话下面还要加一个iv的参数，ecb不用
      cipherType: "base64" //
    };
    let sm4 = new SM4(sm4Config);//这里new一个函数，将上面的sm4Config作为参数传递进去。然后就可以开心的加密了
    // 数据加密
    return sm4.encrypt(data);
  }
}
export default passwordUtils